1

內部架構:klass 與 super 指標

AI035Lesson 14
00:00

在 C 層級,Ruby 物件是以分離的結構來表示 資料與行為 透過指標層級結構。其中 klass 指標將一個實例連結至其「關聯類別」(方法儲存的位置),而 super 指標則將類別連結至其祖先,形成一種結構圖表,供 Ruby 虛擬機用以解析繼承關係。

1. klass 指標與旗標

每個 Ruby 物件都包含一個標頭,內含一個 klass 指標與一個位元遮罩 旗標。這些旗標可識別物件的內部狀態,例如以 'V' 旗標標記自動建立的「虛擬類別」,以處理單例方法的設定。

2. 解耦狀態(圖 24.1)

像 lucille 會儲存其獨特的 實例變數,但本身並無方法。其 klass 指標會引導虛擬機至 Guitar 類別物件的方法表格。

lucille@value類別:Guitarplay()strings()V類別:Objectclone()、dup()klasssuper

3. 繼承鏈

當 lucille.play() 被呼叫時,Ruby 會追隨 klass 指標。若方法在 Guitar中找不到,就會追隨 super 指標至 Object,從此取得對 clone 或 dup的存取權。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>